#ifndef LISTING_HH_
# define LISTING_HH_


// isting = f(type) || manual (nb_column, ...)
// cd use templated Listing

// need a scroll (vertically at least)
// scroll over linked cartridges (pull much of them to let items scroll)
// => Listing with 3D engine

// display by {4,6,8} * {2,3} // 8 2 cd be cool


class Listing
{
friend:
class Context; // to know resolution to calc nb displayable item

public:
  Listing();

  /// listing over Items
  Listing(std::Map<, Item>);

  ~Listing();

  /** build _displayItems
   ** according to T, type of items to display
   */
  void buildDisplayItem();

  /** sets _nbDisplayable
   ** this value is based on window we want to display in &&
   **   screen size (if there's no specified window)
   */
  // useless ?
  // void setNbDisplayable();


  // cd return int: nb dislayed
  /** draw as many items as possible
   */
  void draw();


private:
  // NOTE: std::map first arg: sizeof(item) / nb ?
  std::Map<, DisplayItem> _displayItems;

  // useless ? (3D engine displayed)
  unsigned char _nbDisplayable; /// how many items we can draw
};

#endif /* !LISTING_HH_ */
